<?php
#     Xepec.ru - социальная сеть
#     Copyright (C) 2008  Fedorchenko Alexander
#
#     This program is free software: you can redistribute it and/or modify
#     it under the terms of the GNU Affero General Public License as
#     published by the Free Software Foundation, either version 3 of the
#     License, or (at your option) any later version.
#
#     This program is distributed in the hope that it will be useful,
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#     GNU Affero General Public License for more details.
#
#     You should have received a copy of the GNU Affero General Public License
#     along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
#     Autor: Fedorchenko Alexander
#     Mail: sos20@list.ru
#     Date: 17/01/2009
#
#
#TODO: Разабраться с инклудами для core.php и config.php
#TODO: Сделать кактинки в сообщениях как на http://www.artlebedev.ru/tools/technogrette/html/picture_fragmentation/
#TODO: Фильтровать доступ к запросам запретить "кавычки" и ;
$debug = FALSE;

function log_write($str)
{
	include ("config.php");
	
	$filename = $DOC_ROOT."xepec.log";
	$fd = fopen($filename, "a");
	fwrite($fd, $str."\n");
	fclose($fd);
	return TRUE;
}

function uname_get($uname_get) # Получение массива инфы о юсере
{
	include ("config.php");
	
	$ath = mysql_query( "select * FROM username WHERE id = '$uname_get'", $dbcnx);
	if($ath)
	{
		$uname = mysql_fetch_array($ath);
		mysql_close($dbcnx);
		
		return $uname;
	}
	else
	{
		exit("<p><b>Error: ".mysql_error()."</b></p>");
		mysql_close($dbcnx);
	}
	
}

function do_auth($nic,$pass)
{
	global $error_code;
	#global $uname_auth;
	include ("config.php");
	#if (isset($_COOKIE["xepec_nic"])) 
	#{
	#  $mail = $_COOKIE["xepec_nic"];
	#  $pass = $_COOKIE["xepec_pass"];
	#}

	#   $mail = 10;
	#   $pass = '84b9c13758a81346b9f5d8e06dcb7cf6';
	#   $mail = str_replace('=', '.', $mail);
	#   $pass = str_replace('=', '.', $pass);
	#   $mail = str_replace(';', '.', $mail);
	#   $pass = str_replace(';', '.', $pass);
	
	$date = date("c");

	$re = mysql_query( "SELECT id FROM reg WHERE name = '$nic' and md5 = '$pass'", $dbcnx);
	if (!$re) exit("db error");
	$numrows = mysql_num_rows($re);
	# echo $numrows;
	if ($numrows == 1)
	{
		$uname_auth = mysql_result($re,0,'id');
		
		$ath = mysql_query("UPDATE username SET last_time='$date' WHERE id='$uname_auth'", $dbcnx);
		//$error_code = 200;
		mysql_close($dbcnx);
		setcookie("xepec_nic", $nic, time()+10000);
		setcookie("xepec_pass", $pass, time()+10000);
		log_write($date.': На сайт зашел пользователь "'.$nic.'" (IP: '.$_SERVER["REMOTE_ADDR"].' Agent: '.$_SERVER["HTTP_USER_AGENT"].')');
		
		return $uname_auth;
	}
	else
	{
		if (!$re) echo("hi");
		mysql_close($dbcnx);
		
		return false;
	}
}

function do_check() # Функция проверки прав на страницу возвращяет id юсера который запрашивал, если нет или неправельно то false
{
	global $error_code;
	
	include ("config.php");

	if (!$_COOKIE["xepec_nic"] or !$_COOKIE["xepec_pass"])
	{
		return FALSE;
		exit();
	}
	
	$nic = $_COOKIE["xepec_nic"];
	$pass = $_COOKIE["xepec_pass"];
	$date_reg = $date = date("c");
	
#	#   $mail = 2;
#	#   $pass = 'c81e728d9d4c2f636f067f89cc14862c';
	$mail = str_replace('%40', '@', $mail);
#	#   $pass = str_replace('=', '.', $pass);
#	#   $mail = str_replace(';', '.', $mail);
#	#   $pass = str_replace(';', '.', $pass);
	$re = mysql_query("SELECT * FROM reg WHERE name = '$nic' and md5 = '$pass'", $dbcnx);
	$ath = mysql_query("SELECT id FROM reg WHERE name = '$nic' and md5 = '$pass'", $dbcnx);
	if (!$re)  {exit("db error"); }//return false;}
	if (!$ath)  {exit("db error");}// return false;}
	$uname_id = mysql_result($ath,0,'id');
	$numrows = mysql_num_rows($re);
	if ($numrows == 1)
	{
		$error_code = 200;
		mysql_close($dbcnx);
		log_write($date.': Пользователю "'.$nic.'" доступна страница '.$_SERVER["PHP_SELF"].'  (IP: '.$_SERVER["REMOTE_ADDR"].' Agent: '.$_SERVER["HTTP_USER_AGENT"]).')';
		
		return $uname_id;
	}
	else
	{
		if (!$re) echo("hi");
		mysql_close($dbcnx);
		setcookie("xepec_mail", 0);
		setcookie("xepec_pass", 0);
		$error_code = 404;
		return FALSE;
	}
}

function resizeimg($filename, $smallimage, $h)
{
	#FIXME Протестировать с вертикальными картинками с учетом пропорций 3/4 или 4/3 или другая
	
	// Определяем размер изображения
	$size = getimagesize($filename);
	if ($size === false) die ('Bad image file!');
	#Проверяем тип какртинки (вертикальная, горизонтальная)
	if ($size[0] > $size[1])
	{
		/////////
		//     //
		/////////
		$propor = $size[0] / $size[1];
		//echo "Ширина:".$size[0]." Высота: ".$size[1]." Пропорция:".$propor;
		$height = $h;
		$width= $h*$propor;
	}
	else
	{
		///////
		//   //
		//   //
		///////
		$propor = $size[1] / $size[0];
		//echo "Ширина:".$size[0]." Высота: ".$size[1]." Пропорция:".$propor;
		$width = $h/$propor;
		$height = $h;
	
	}
	///проверяем нужно ли вообще сжимать картинку
	if (($size[0]<$width) && ($size[1]<$height)) return FALSE;
	//Читаем исходный фаил
	switch ($size[2])
	{
		case "1": $source = imagecreatefromgif($filename) or die('Cannot load original GIF'); break;
		case "2": $source = imagecreatefromjpeg($filename) or die('Cannot load original JPEG'); break;
		case "3": $source = imagecreatefrompng($filename) or die('Cannot load original PNG'); break;
	}
	
	// Создаем новое изображение
	$target = imagecreatetruecolor($width, $height);
	// Копируем
	imagecopyresampled(
	  $target,  // Идентификатор нового изображения
	  $source,  // Идентификатор исходного изображения
	  0,0,      // Координаты (x,y) верхнего левого угла в новом изображении
	  0,0,      // Координаты (x,y) верхнего левого угла копируемого блока существующего изображения
	  $width,     // Новая ширина копируемого блока
	  $height,     // Новая высота копируемого блока
	  $size[0], // Ширина исходного копируемого блока
	  $size[1]  // Высота исходного копируемого блока
	);
	
	imagepng($target, $smallimage, 9);
	//imagegif($target, $smallimage); - GIF весит меньше
	
	imagedestroy($target);
	imagedestroy($source);
	
	return TRUE;
}

function do_update_uname($name, $nic, $mail, $sex, $bday, $phone, $icq, $photo, $about, $interes, $citata)
{
	#TODO добавить возможность смены пароля
	global $error_code;
	include ("config.php");
# 		$uname = mysql_fetch_array($ath);
# 		$name = $uname['name'];
 		$nic = $uname['nic'];
# 		$mail = $uname['email'];
# 	
		
# 		$bdate = $uname['bday'];
# 		$phone = $uname['phone'];
# 		$icq = $uname['iсq'];
# 		$about = $uname['about'];
# 		$interes = $uname['interes'];
# 		$citata = $uname['citata'];
	
	
	
	     $mail = str_replace('=', '.', $mail);
	     $pass = str_replace('=', '.', $pass);
	
	     $mail = str_replace(';', '.', $mail);
	     $pass = str_replace(';', '.', $pass);
	
	     $mail = str_replace('-', '_', $mail);
	     $pass = str_replace('-', '_', $pass);
	
	$nic_cook =  $_COOKIE["xepec_nic"];
	$pass_cook = $_COOKIE["xepec_pass"];
	$pass = $pass_cook;
	
	$vcard="<vCard xmlns=\'vcard-temp\'><FN>$name</FN><N><FAMILY>$name</FAMILY></N><NICKNAME>$nic</NICKNAME><EMAIL>$mail</EMAIL><URL>$icq</URL><BDAY>$bdate</BDAY><DESC>$about</DESC></vCard>";
	$date = $date = date("c");
		
		echo "name = ".$nic_cook.", pass = ".$pass_cook.", id = ".$id_cook;
	$re = mysql_query( "SELECT id FROM reg WHERE name = '$nic_cook' and md5 = '$pass_cook'", $dbcnx);
	if (!$re) return FALSE;

	$numrows = mysql_num_rows($re);
	if ($numrows == 1)
	{
	
		$uname_auth = mysql_result($re,0,'id');
		echo "<br>".$uname_auth;
		if ($id_cook == $uname_auth)
		{
			$ath = mysql_query( "SELECT * from username WHERE id='$uname_auth'",$dbcnx);
			if(!$ath){exit("db error");return FALSE;}
			else
			{
				$uname_old = mysql_fetch_array($ath);
				$uname_old_nic=$uname_old['nic'];
				if (($uname_old['name'] != $name) || ($uname_old['passw'] != $pass) || ($uname_old['nic'] != $nic) || ($uname_old['email'] != $mail) || ($uname_old['sex'] != $sex) || ($uname_old['bday'] != $bday) || ($uname_old['phone'] != $phone) || ($uname_old['iсq'] != $icq) || ($uname_old['photo'] != $photo) || ($uname_old['about'] != $about) || ($uname_old['interes'] != $interes) || ($uname_old['citata'] != $citata) || ($uname_old['photo'] != $photo))
				{
					echo $photo;
					#FIXME: тут должнен быть запрос на изменение пароля!!
					#$re = mysql_query("UPDATE reg SET name='$nic_cook' WHERE id='$uname_auth'", $dbcnx);
					$re = mysql_query("UPDATE users SET username='$nic' WHERE username='$uname_old_nic'", $dbconvia);
				
					$re = mysql_query("UPDATE username SET name='$name', nic='$nic', email='$mail', bday='$bday', sex='$sex', phone='$phone', icq='$icq', photo='$photo', last_time='$date', interes='$interes', citata='$citata', about='$about' WHERE id='$uname_auth'", $dbcnx);
				
					#TODO: записывать в vCard аватар!!
					$re = mysql_query("UPDATE vcard SET username='$nic', vcard='$vcard'  WHERE username='$uname_old_nic'", $dbconvia);
				
					if (!$re) exit("База Данных временно не работает");
					mysql_close($dbcnx);
					mysql_close($dbconvia);
					
					return FALSE;
				}
				else
				{
				mysql_close($dbcnx);
				mysql_close($dbconvia);
				
				return FALSE;
				}
			}
			
		}
		else $error_code = 403;
		
		#global $md5pass;
		#setcookie("xepec_nic", $nic, time()+10000);
		#setcookie("xepec_pass", $pass, time()+10000);
		
		if (!$re) echo("hi");
	
	mysql_close($dbcnx);
	mysql_close($dbconvia);
	
	#TODO: Доделать запись логов а именно скакой на какую информацию произошло изменение
	log_write($date.': Пользователь "'.$nic.'" обновил свою информацию email: '.$mail.', имя: '.$name.', телефон:'.$phone.', пол:'.$sex.' (IP: '.$_SERVER["REMOTE_ADDR"].' Agent: '.$_SERVER["HTTP_USER_AGENT"]).')';
	return TRUE;
	}
	else
	{
		mysql_close($dbcnx);
		mysql_close($dbconvia);
		
		return FALSE;
	}
}

function show_groups($id)
{
	include ("config.php");
	$nic_cook = $_COOKIE["xepec_nic"];
	$pass_cook = $_COOKIE["xepec_pass"]; #$pass = $pass_cook;
	$re = mysql_query( "SELECT groups FROM username WHERE nic = '$nic_cook'", $dbcnx);
	#$re = mysql_query( "SELECT id from reg where name = '$mail_cook' and md5 = '$pass_cook'");
	
	$groups = mysql_result($re,0);
	if ($groups == 0)
	{
		mysql_close($dbcnx);
		
		return FALSE;
	}
	else
	{
		$exp_groups=explode(" ",$groups);
		for($i=0; $i<count($exp_groups); $i++)
		{
			$re1 = mysql_query( "SELECT nazvanie FROM groups WHERE id = '$exp_groups[$i]'", $dbcnx);
			$groups_name = mysql_result($re1,0);
			$groups_name11[$i] =$groups_name;
		}
		mysql_close($dbcnx);
		
		return $groups_name11;
	}
}


function do_check_str($str)
{
	//echo iconv_strlen($str)."<br>";
	
	$str = str_replace(';', '\;', $str);
	$str = str_replace("'", "\'", $str);
	$str = str_replace('"', '\"', $str);
	return $str;
}
?>
